var util = require('../../../../utils/utils.js')
class Movie {

  constructor(url) {  //在类的参数传递中我们用constructor( )进行传参。传递参数后可以直接使用this.xxx进行调用。
    this.url = url;
  }

  getMovieData(cb) {  //调用url获取数据
    this.cb = cb;  //传cb这个形参进来，如果传变量，则是变量，如果传的是函数，this.cb就是函数      1.调用的时候，之类执行第一，传的是函数,只是函数，并没有运行，下面才开始运行
    // this.cb=(movie) => {  //实际运行
    //   this.setData({
    //     movie: movie
    //   })
    // }  
    util.http(this.url, this.processDoubanData.bind(this));  //bind改变函数this原本指向  2. 
  }
  //数据回调处理函数
  processDoubanData(data) { //2步的执行
    if (!data) {  //如果没有成功的回传数据，直接return
      return;
    }
    var director = {  //单独处理导演
      avatar: "",
      name: "",
      id: ""
    }
    if (data.directors[0] != null) {
      if (data.directors[0].avatars != null) {
        director.avatar = data.directors[0].avatars.large

      }
      director.name = data.directors[0].name;  //导演
      director.id = data.directors[0].id;  //
    }
    var movie = {
      movieImg: data.images ? data.images.large : "",  //大图
      country: data.countries[0],  //影片属于区域
      title: data.title,  //电影名称
      originalTitle: data.original_title, //电影名称
      wishCount: data.wish_count,  //多少人喜欢
      commentCount: data.comments_count, //评论
      year: data.year,  //年份
      generes: data.genres.join("、"),  //类型
      stars: util.convertToStarsArray(data.rating.stars),  //星星
      score: data.rating.average, //评分
      director: director,  //导演名字，图片，ID对象
      casts: util.convertToCastString(data.casts),  //影人处理函数   刘若英 / 井柏然 / 周冬雨 
      castsInfo: util.convertToCastInfos(data.casts), //影人处理函数  图片加名字
      summary: data.summary  //剧情简介
    }
    this.cb(movie); //这里 3. 因为第一步传的是函数，所以，this.cb变成了函数 ，再把这个movie对象当成参数，传
  }
}

export { Movie }  //导出